/*
 * Parser.c
 *
 *  Created on: 18/04/2013
 *      Author: lucho0
 */

#include "parser.h"

int ComparadoraDePalabras(void* a, void* b) {
	return !strcmp((char*) a, (char*) b);
}

int Parsear(FILE* fEntrada, Lista* listaDePalabras) {

	char bufferPalabra[250];
	unsigned int tamanioPalabraActual = 0;
	int charActual;

	do {
		charActual = fgetc(fEntrada);
		if (isCaracterValido(charActual)) {
			bufferPalabra[tamanioPalabraActual] = charActual;
			tamanioPalabraActual++;
		} else {
			if (tamanioPalabraActual > 0) {
				bufferPalabra[tamanioPalabraActual] = 0;

				//TODO: checkeo que no este repetida y agrego la palabra a la lista
				if (!ExisteElemento(listaDePalabras, bufferPalabra,
						&ComparadoraDePalabras)) {
					char* palabra = (char*) malloc(
							sizeof(char) * (strlen(bufferPalabra) + 1));
					strcpy(palabra, bufferPalabra);
					AgregarElemento(listaDePalabras, palabra);
				}
				tamanioPalabraActual = 0;
			}
		}

	} while (charActual != EOF);

	return 0;
}

int isCaracterValido(char c) {
	const char* aux = strchr(caracteresValidos, c);
	if (aux == NULL)
		return 0;
	else
		return 1;
}
